/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#include "构建几何节点.h"

#include <节点/网格/几何网格.h>
#include <节点/网格/网格修改.h>
#include <节点/插座/C_数值插座.h>
#include <节点/插座/list/list物体插座.h>
#include <节点/插座/list/list矢量插座.h>

#include <Context/当前默认操作数据.h>


#include "A_引擎/引擎.h"
#include "A_引擎/文件工程/工程文件.h"



static void on_参数修改(S_Props& prop) {
	//switch ((*(S_PropValueEnum*)prop.m_Value).m_当前选项)
	auto nodes = f_global_get激活节点();
	for (auto 节点 : nodes) {
		节点->f_set是否要更新(true);
	}
}

static void on_参数修改_属性栏更新(S_Props& prop) {
	auto nodes = f_global_get激活节点();
	for (auto 节点 : nodes) {
		节点->f_set是否要更新(true);

		for (auto& panel : 节点->m_包含在多个视口的UI部件) {
			C_节点面板* 节点面板 = static_cast<C_节点面板*>(panel);
			C_节点视口* view = static_cast<C_节点视口*>(节点面板->m_节点当前所在视口);
			节点面板->m_属性面板参数构建(view->m_属性栏, (S_结构对象指针)节点面板);
		}
	}
}

static void on_UV虚拟体类型_参数修改(S_Props& prop) {
	auto nodes = f_global_get激活节点();
	for (auto 节点 : nodes) {
		节点->f_set是否要更新(true);
		C_投影纹理坐标节点* node = dynamic_cast<C_投影纹理坐标节点*>(节点);
		f_node_设置UV操作虚拟体类型(node->f_get虚拟体(), f_prop_enum(node->m_投影类型)); 
	}
}

static void on_参数修改_重新编译(S_Props& prop) {
	auto nodes = f_global_get激活节点();
	for (auto 节点 : nodes) {
		节点->f_更新上层节点(true);
	}
}



static void f_几何网格节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_平面网格节点* 网格节点 = dynamic_cast<C_平面网格节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_几何网格(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_网格节点(*S_框架::g_3D视口环境);
		node->m_ICO = "ico平面网格0016";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何网格(plane, node);
	return plane;
}

void f_节点重置_几何网格(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);

	plane->m_属性面板参数构建 = f_几何网格节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_几何平面节点_3D视口更新(C_节点面板* node, S_Scene* scene) {
	//C_平面网格节点* 网格节点 = dynamic_cast<C_平面网格节点*>(node->m_NodeData);
}

static void f_几何平面节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_平面网格节点* 网格节点 = dynamic_cast<C_平面网格节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	bool 继续添加 = f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	if (继续添加) {
		S_Props prop;
		props.push_back(网格节点->m_位置);
		props.push_back(网格节点->m_旋转);
		props.push_back(网格节点->m_缩放);
		
		网格节点->m_位置.m_UI->m_Update = on_参数修改;
		网格节点->m_旋转.m_UI->m_Update = on_参数修改;
		网格节点->m_缩放.m_UI->m_Update = on_参数修改;
	}
	
	plane->f_构建属性部件(props);

	f_几何平面节点_3D视口更新(((C_节点面板*)obj), nullptr);
}


C_节点面板* f_节点构建_几何平面(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_平面网格节点(*S_框架::g_3D视口环境);
		if(node->m_ICO.empty()) node->m_ICO = "ico平面网格0016";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何平面(plane, node);

	return plane;
}

void f_节点重置_几何平面(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);

	plane->m_属性面板参数构建 = f_几何平面节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}






static void f_几何球体节点_3D视口更新(C_节点面板* node, S_Scene* scene) {
	//C_球体网格节点* 网格节点 = dynamic_cast<C_球体网格节点*>(node->m_NodeData);

	//auto* ob = DEF_物体插座数据(网格节点->f_get输出插座(1), 0);
	//if (ob) {
		//f_surface_创建实例((S_Mesh*)S_Core::g_当前独立显示物体->m_Data[0], (S_Mesh*)((ob->m_Data)[0]));
	//}
	//f_surface_创建实例((S_Mesh*)S_Core::g_当前独立显示物体->m_Data[1], (S_Mesh*)obs[0]->m_Data[0]);
	//f_surface_创建实例((S_Mesh*)S_Core::g_当前独立显示物体->m_Data[2], (S_Mesh*)obs[0]->m_Data[0]);
	//S_Core::g_当前独显物体类型 = E_物体类型::e_模型;
	//f_global_所在独显模型材质();

}

static void f_几何球体节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_球体网格节点* node = dynamic_cast<C_球体网格节点*>(((C_节点面板*)obj)->m_NodeData);
	
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	S_Props prop;

	props.push_back(node->m_位置);
	props.push_back(node->m_旋转);
	props.push_back(node->m_缩放);
	
	node->m_位置.m_UI->m_Update = on_参数修改;
	node->m_旋转.m_UI->m_Update = on_参数修改;
	node->m_缩放.m_UI->m_Update = on_参数修改;

	plane->f_构建属性部件(props);

	//f_几何球体节点_3D视口更新(((C_节点面板*)obj), nullptr);
	
}


C_节点面板* f_节点构建_几何球体(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_球体网格节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_物体);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何球体(plane, node);
    return plane;
}


void f_节点重置_几何球体(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);
	
	plane->m_属性面板参数构建 = f_几何球体节点_部件构建属性;
	plane->m_3D视口更新 = f_几何球体节点_3D视口更新;
	plane->m_ICO = "ico球体0002";
	node->m_ICO = "ico球体0002";
}



















static void f_几何矩形节点_3D视口更新(C_节点面板* node, S_Scene* scene) {
	C_矩形网格节点* 网格节点 = dynamic_cast<C_矩形网格节点*>(node->m_NodeData);

	auto* ob = DEF_物体插座数据(网格节点->f_get输出插座(1), 0);
	if (ob) {
		f_surface_关联实例((S_Mesh*)S_框架::g_当前独立显示物体->m_Data[0], (S_Mesh*)((ob->m_Data)[0]));
	}

	S_框架::g_当前独显物体类型 = E_物体数据类型::e_模型;
	//f_global_所在独显模型材质();
}

static void f_几何矩形节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_矩形网格节点* node = dynamic_cast<C_矩形网格节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	S_Props prop;

	props.push_back(node->m_位置);
	props.push_back(node->m_旋转);
	props.push_back(node->m_缩放);

	node->m_位置.m_UI->m_Update = on_参数修改;
	node->m_旋转.m_UI->m_Update = on_参数修改;
	node->m_缩放.m_UI->m_Update = on_参数修改;

	plane->f_构建属性部件(props);

	f_几何矩形节点_3D视口更新(((C_节点面板*)obj), nullptr);
	
}


C_节点面板* f_节点构建_几何矩形(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_矩形网格节点(*S_框架::g_3D视口环境);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_物体);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何矩形(plane, node);
	return plane;
}

void f_节点重置_几何矩形(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);

	plane->m_属性面板参数构建 = f_几何矩形节点_部件构建属性;
	plane->m_ICO = "ico立方体0001";
	node->m_ICO = "ico立方体0001";
}









static void f_线框立方体节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_线框立方体节点* node = dynamic_cast<C_线框立方体节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	S_Props prop;
	props.push_back(node->m_位置);
	props.push_back(node->m_旋转);
	props.push_back(node->m_缩放);

	node->m_位置.m_UI->m_Update = on_参数修改;
	node->m_旋转.m_UI->m_Update = on_参数修改;
	node->m_缩放.m_UI->m_Update = on_参数修改;

	plane->f_构建属性部件(props);

}

C_节点面板* f_节点构建_线框立方体(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_线框立方体节点(ctx_3d);
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_线框立方体(plane, node);

	return plane;
}

void f_节点重置_线框立方体(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);

	plane->m_属性面板参数构建 = f_线框立方体节点_部件构建属性;
	plane->m_ICO = "ico立方体0001";
	node->m_ICO = "ico立方体0001";
}






static void f_几何节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_几何节点* node = dynamic_cast<C_几何节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	S_Props prop;

	node->m_数量.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_数量);

	node->m_合并顶点.m_UI->m_Update = on_参数修改_属性栏更新;
	props.push_back(node->m_合并顶点);
	if (f_prop_Bool(node->m_合并顶点)) {
		node->m_合并顶点阈.m_UI->m_Update = on_参数修改;
		props.push_back(node->m_合并顶点阈);
	}
	node->m_计算平滑法线.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_计算平滑法线);
	
	node->m_生成GPU网格.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_生成GPU网格);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_几何(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_几何节点(ctx_3d);
		node->m_ICO = "ico立方体0001";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何(plane, node);
	return plane;
}

void f_节点重置_几何(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_物体);
	plane->m_属性面板参数构建 = f_几何节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_几何节点ID_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_几何ID节点* node = dynamic_cast<C_几何ID节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_几何ID(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_几何ID节点(ctx_3d);
		node->m_ICO = "ico_缺损0001";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_几何ID(plane, node);
	return plane;
}

void f_节点重置_几何ID(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_物体);
	plane->m_属性面板参数构建 = f_几何节点ID_部件构建属性;
	plane->m_ICO = node->m_ICO;
	
}




static void f_当前多边形_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_当前多边形节点* node = dynamic_cast<C_当前多边形节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_当前多边形(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_当前多边形节点(ctx_3d);
		node->m_ICO = "ico_缺损0001";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_当前多边形(plane, node);
	return plane;
}

void f_节点重置_当前多边形(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_物体);
	plane->m_属性面板参数构建 = f_当前多边形_部件构建属性;
	plane->m_ICO = node->m_ICO;

}



static void f_基本多边形节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_基本多边形节点* node = dynamic_cast<C_基本多边形节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_几何网格类型.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_几何网格类型);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_基本多边形(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_基本多边形节点(ctx_3d);
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_基本多边形(plane, node);
	return plane;
}

void f_节点重置_基本多边形(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_物体);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_物体);

	plane->m_属性面板参数构建 = f_基本多边形节点_部件构建属性;
	plane->m_ICO = "ico立方体0001";
	node->m_ICO = "ico立方体0001";
}







static void f_编辑网格节点_3D视口更新(C_节点面板* node, S_Scene* scene) {
	C_多边形四元数变换节点* 网格节点 = dynamic_cast<C_多边形四元数变换节点*>(node->m_NodeData);

}

static void f_编辑网格节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形四元数变换节点* node = dynamic_cast<C_多边形四元数变换节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	//for (auto& e : props) {
	//	e.m_UI->m_Update = on_参数修改;
	//}
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_编辑网格(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_多边形四元数变换节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_编辑网格(plane, node);

	return plane;
}

void f_节点重置_编辑网格(C_节点面板* plane, C_节点基类* node) {
	C_多边形四元数变换节点* v = dynamic_cast<C_多边形四元数变换节点*>(node);

	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_编辑网格节点_部件构建属性;
	plane->m_3D视口更新 = f_编辑网格节点_3D视口更新;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}








static void f_网格体素节点_3D视口更新(C_节点面板* n, S_Scene* scene) {
	C_网格体素节点* node = dynamic_cast<C_网格体素节点*>(n->m_NodeData);

}

static void f_网格体素节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_网格体素节点* node = dynamic_cast<C_网格体素节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	auto prop = f_alloc_F32Prop(&DEF_F32插座数据(node->f_get输入插座(2)), L"粒子大小");
	props.push_back(prop);

	
	plane->f_构建属性部件(props);

	f_网格体素节点_3D视口更新(((C_节点面板*)obj), nullptr);

}

C_节点面板* f_节点构建_网格体素(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_网格体素节点(dev_ctx);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_网格体素(plane, node);

	return plane;
}

void f_节点重置_网格体素(C_节点面板* plane, C_节点基类* node) {
	C_网格体素节点* v = dynamic_cast<C_网格体素节点*>(node);

	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_网格体素节点_部件构建属性;
	plane->m_3D视口更新 = f_网格体素节点_3D视口更新;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}










static void f_网格采样节点_3D视口更新(C_节点面板* n, S_Scene* scene) {
	C_网格采样节点* node = dynamic_cast<C_网格采样节点*>(n->m_NodeData);

}

static void f_网格采样节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_网格采样节点* node = dynamic_cast<C_网格采样节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	auto prop = f_alloc_F32Prop(&DEF_F32插座数据(node->f_get输入插座(2)), L"间隔");
	prop.m_UI->m_Update = on_参数修改;
	props.push_back(prop);

	plane->f_构建属性部件(props);

	f_网格采样节点_3D视口更新(((C_节点面板*)obj), nullptr);

}

C_节点面板* f_节点构建_网格采样(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_网格采样节点(dev_ctx);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_网格采样(plane, node);
	return plane;
}

void f_节点重置_网格采样(C_节点面板* plane, C_节点基类* node) {
	C_网格采样节点* v = dynamic_cast<C_网格采样节点*>(node);
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_网格采样节点_部件构建属性;
	plane->m_3D视口更新 = f_网格采样节点_3D视口更新;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}





static void f_计算网格法线_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_计算网格法线节点* node = dynamic_cast<C_计算网格法线节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	node->m_法线类型.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_法线类型);
	
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_计算网格法线(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_计算网格法线节点(dev_ctx);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_计算网格法线(plane, node);
	return plane;
}

void f_节点重置_计算网格法线(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_计算网格法线_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}








static void f_网格属性节点_3D视口更新(C_节点面板* n, S_Scene* scene) {
	C_取网格属性节点* node = dynamic_cast<C_取网格属性节点*>(n->m_NodeData);

}

static void f_网格属性节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取网格属性节点* node = dynamic_cast<C_取网格属性节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	node->m_网格属性.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_网格属性);
	
	
	plane->f_构建属性部件(props);

	f_网格属性节点_3D视口更新(((C_节点面板*)obj), nullptr);

}

C_节点面板* f_节点构建_网格属性(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取网格属性节点(dev_ctx);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_网格属性(plane, node);
	return plane;
}

void f_节点重置_网格属性(C_节点面板* plane, C_节点基类* node) {
	C_取网格属性节点* v = dynamic_cast<C_取网格属性节点*>(node);
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_网格属性节点_部件构建属性;
	plane->m_3D视口更新 = f_网格属性节点_3D视口更新;
	plane->m_ICO = node->m_ICO;
}







static void f_截取网格节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_截取网格节点* node = dynamic_cast<C_截取网格节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//auto prop = f_alloc_F32Prop(DEF_F32插座数据(node->f_get输入插座(2)), L"间隔");
	props.push_back(node->m_截取方式);
	props.push_back(node->m_执行代码);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_截取网格(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_截取网格节点(dev_ctx);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_截取网格(plane, node);
	return plane;
}

void f_节点重置_截取网格(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_截取网格节点_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}




static void f_网格选择节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_网格选择节点* node = dynamic_cast<C_网格选择节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_选择类型.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_选择类型);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_网格选择(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_网格选择节点(ctx_3d);
		if (node->m_ICO.empty()) node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_网格选择(plane, node);
	return plane;
}

void f_节点重置_网格选择(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_网格选择节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}






static void f_填充网格顶点节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_填充网格顶点节点* node = dynamic_cast<C_填充网格顶点节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	
	props.push_back(node->m_网格属性);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_填充网格顶点(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_填充网格顶点节点(dev_ctx);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_填充网格顶点(plane, node);
	return plane;
}

void f_节点重置_填充网格顶点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_填充网格顶点节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_填充网格纹理坐标节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_填充网格纹理坐标节点* node = dynamic_cast<C_填充网格纹理坐标节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_填充网格纹理坐标(S_UI创建环境& ctx, S_设备环境& dev_ctx, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_填充网格纹理坐标节点(dev_ctx);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_填充网格纹理坐标(plane, node);
	return plane;
}

void f_节点重置_填充网格纹理坐标(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_填充网格纹理坐标节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_面朝向节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_面朝向节点* node = dynamic_cast<C_面朝向节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_面朝向(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_面朝向节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_面朝向(plane, node);
	return plane;
}

void f_节点重置_面朝向(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_面朝向节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置材质ID节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置材质ID节点* node = dynamic_cast<C_设置材质ID节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置材质ID(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_设置材质ID节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_填充网格顶点(plane, node);
	return plane;
}

void f_节点重置_设置材质ID(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_设置材质ID节点_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}



static void f_多边形边_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_构建多边形边节点* node = dynamic_cast<C_构建多边形边节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_边模式.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_边模式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形边(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_构建多边形边节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形边(plane, node);
	return plane;
}

void f_节点重置_多边形边(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形边_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}




static void f_多边形面_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_构建多边形面节点* node = dynamic_cast<C_构建多边形面节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_面朝向.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_面朝向);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形面(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_构建多边形面节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形面(plane, node);
	return plane;
}

void f_节点重置_多边形面(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形面_部件构建属性;
	plane->m_ICO = node->m_ICO;
	
}




static void f_多边形纹理坐标_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_添加纹理坐标节点* node = dynamic_cast<C_添加纹理坐标节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_添加多边形纹理坐标(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_添加纹理坐标节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_添加多边形纹理坐标(plane, node);
	return plane;
}

void f_节点重置_添加多边形纹理坐标(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形纹理坐标_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_添加多边形面_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_添加多边形元素节点* node = dynamic_cast<C_添加多边形元素节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_添加多边形元素(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_添加多边形元素节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_添加多边形元素(plane, node);
	return plane;
}

void f_节点重置_添加多边形元素(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_添加多边形面_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_投影多边形纹理坐标_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_投影纹理坐标节点* node = dynamic_cast<C_投影纹理坐标节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_投影类型.m_UI->m_Update = on_UV虚拟体类型_参数修改;
	props.push_back(node->m_投影类型);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_投影多边形纹理坐标(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_投影纹理坐标节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_投影多边形纹理坐标(plane, node);
	return plane;
}

void f_节点重置_投影多边形纹理坐标(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_投影多边形纹理坐标_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_多边形_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_构建多边形节点* node = dynamic_cast<C_构建多边形节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_构建多边形节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形(plane, node);
	return plane;
}

void f_节点重置_多边形(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}




static void f_多边形添加顶点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形添加顶点节点* node = dynamic_cast<C_多边形添加顶点节点*>(((C_节点面板*)obj)->m_NodeData);

	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形添加顶点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_多边形添加顶点节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形添加顶点(plane, node);
	return plane;
}

void f_节点重置_多边形添加顶点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形添加顶点_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}




static void f_多边形删除顶点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形删除顶点节点* node = dynamic_cast<C_多边形删除顶点节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形删除顶点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_多边形删除顶点节点(ctx_3d);
	//if (plane == nullptr) {
	//	plane = f_节点创建_UI面板构建(ctx, node, E_节点区类型::e_节点区_节点视图);
	//}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形删除顶点(plane, node);
	return plane;
}

void f_节点重置_多边形删除顶点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形删除顶点_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}





static void f_取多边形索引节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形索引节点* node = dynamic_cast<C_多边形索引节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取多边形索引节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形索引节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形删除顶点(plane, node);
	return plane;
}

void f_节点重置_取多边形索引节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形删除顶点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_取多边形面顶点节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取多边形面顶点节点* node = dynamic_cast<C_取多边形面顶点节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取多边形面顶点节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取多边形面顶点节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取多边形面顶点节点(plane, node);
	return plane;
}

void f_节点重置_取多边形面顶点节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取多边形面顶点节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_取多边形元素节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取多边形_元素* node = dynamic_cast<C_取多边形_元素*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//node->m_属性.m_UI->m_Update = on_参数修改;
	//props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取多边形元素节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取多边形_元素(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取多边形元素节点(plane, node);
	return plane;
}

void f_节点重置_取多边形元素节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取多边形元素节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置多边形面顶点节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置多边形面顶点节点* node = dynamic_cast<C_设置多边形面顶点节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置多边形面顶点节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_设置多边形面顶点节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_设置多边形面顶点节点(plane, node);
	return plane;
}

void f_节点重置_设置多边形面顶点节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_设置多边形面顶点节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置多边形面属性节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置多边形面属性节点* node = dynamic_cast<C_设置多边形面属性节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改_重新编译;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置多边形面属性节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_设置多边形面属性节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_设置多边形面属性节点(plane, node);
	return plane;
}

void f_节点重置_设置多边形面属性节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_设置多边形面属性节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置多边形面UV节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置多边形面UV节点* node = dynamic_cast<C_设置多边形面UV节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置多边形面UV节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_设置多边形面UV节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_设置多边形面UV节点(plane, node);
	return plane;
}

void f_节点重置_设置多边形面UV节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_设置多边形面UV节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置面材质槽ID节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置面材质槽ID节点* node = dynamic_cast<C_设置面材质槽ID节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置面材质槽ID节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_设置面材质槽ID节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_设置面材质槽ID节点(plane, node);
	return plane;
}

void f_节点重置_设置面材质槽ID节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_设置面材质槽ID节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_多边形复制节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形复制节点* node = dynamic_cast<C_多边形复制节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	node->m_合并类型.m_UI->m_Update = on_参数修改_重新编译;
	props.push_back(node->m_合并类型);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形复制节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形复制节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形复制节点(plane, node);
	return plane;
}

void f_节点重置_多边形复制节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形复制节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_多边形拷贝节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形拷贝节点* node = dynamic_cast<C_多边形拷贝节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形拷贝节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形拷贝节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形拷贝节点(plane, node);
	return plane;
}

void f_节点重置_多边形拷贝节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形拷贝节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_多边形变换节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形变换节点* node = dynamic_cast<C_多边形变换节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形变换节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形变换节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形变换节点(plane, node);
	return plane;
}

void f_节点重置_多边形变换节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形变换节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



/*static void f_投影纹理坐标节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_投影纹理坐标节点* node = dynamic_cast<C_投影纹理坐标节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	props.push_back(node->m_投影类型);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_投影纹理坐标节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_投影纹理坐标节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_投影纹理坐标节点(plane, node);
	return plane;
}

void f_节点重置_投影纹理坐标节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_投影纹理坐标节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}*/




static void f_多边形桥接节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形桥接* node = dynamic_cast<C_多边形桥接*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形桥接节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) node = new C_多边形桥接(ctx_3d);
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形桥接节点(plane, node);
	return plane;
}

void f_节点重置_多边形桥接节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_多边形桥接节点_部件构建属性;
	plane->m_ICO = "ico编辑网格0014";
	node->m_ICO = "ico编辑网格0014";
}



static void f_点桥接节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_点桥接* node = dynamic_cast<C_点桥接*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_点桥接节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_点桥接(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_点桥接节点(plane, node);
	return plane;
}

void f_节点重置_点桥接节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_点桥接节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
	
}




static void f_多边形边采样节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形边采样* node = dynamic_cast<C_多边形边采样*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);

	node->m_多点采样.m_UI->m_Update = on_参数修改_重新编译;
	props.push_back(node->m_多点采样);

	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形边采样节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形边采样(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形边采样节点(plane, node);
	return plane;
}

void f_节点重置_多边形边采样节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形边采样节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
	
}




static void f_边网格化节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形边网格化* node = dynamic_cast<C_多边形边网格化*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//props.push_back(node->m_截取方式);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_边网格化节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形边网格化(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_边网格化节点(plane, node);
	return plane;
}

void f_节点重置_边网格化节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板重构(plane, node, E_节点区类型::e_节点区_节点视图);
	f_节点重构_插座重构(plane, node, E_节点区类型::e_节点区_节点视图);

	plane->m_属性面板参数构建 = f_边网格化节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
	
}




static void f_多边形转网格节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形转网格节点* node = dynamic_cast<C_多边形转网格节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_拷贝.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_拷贝);
	node->m_合并顶点.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_合并顶点);
	node->m_平滑法线.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_平滑法线);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形转网格节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形转网格节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形转网格节点(plane, node);
	return plane;
}

void f_节点重置_多边形转网格节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形转网格节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_多边形边实体化节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_多边形边实体化* node = dynamic_cast<C_多边形边实体化*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_曲线.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_曲线);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_多边形边实体化节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_多边形边实体化(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_多边形边实体化节点(plane, node);
	return plane;
}

void f_节点重置_多边形边实体化节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_多边形边实体化节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}




static void f_取多边形边节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取多边形_边* node = dynamic_cast<C_取多边形_边*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	//node->m_平滑法线.m_UI->m_Update = on_参数修改;
	//props.push_back(node->m_平滑法线);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取多边形边节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取多边形_边(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取多边形边节点(plane, node);
	return plane;
}

void f_节点重置_取多边形边节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取多边形边节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_取网格元素节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取网格元素节点* node = dynamic_cast<C_取网格元素节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取网格元素节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取网格元素节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取网格元素节点(plane, node);
	return plane;
}

void f_节点重置_取网格元素节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取网格元素节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_取网格元素顶点节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取网格元素顶点节点* node = dynamic_cast<C_取网格元素顶点节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取网格元素顶点节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取网格元素顶点节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取网格元素顶点节点(plane, node);
	return plane;
}

void f_节点重置_取网格元素顶点节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取网格元素顶点节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}



static void f_设置网格元素顶点节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_设置网格元素顶点节点* node = dynamic_cast<C_设置网格元素顶点节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_设置网格元素顶点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_设置网格元素顶点节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_设置网格元素顶点(plane, node);
	return plane;
}

void f_节点重置_设置网格元素顶点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_设置网格元素顶点节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}








bool f_几何网格节点重构(C_节点面板** plane, C_节点基类* node, S_UI创建环境* ctx) {
	if (node->m_TypeName == "平面网格节点") {
		if (!plane[0]) plane[0] = f_节点构建_几何平面(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_几何平面(plane[0], node);
	}
	else if (node->m_TypeName == "球体网格生成节点") {
		if (!plane[0]) plane[0] = f_节点构建_几何球体(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_几何球体(plane[0], node);
	}
	else if (node->m_TypeName == "矩形网格生成节点") {
		if (!plane[0]) plane[0] = f_节点构建_几何矩形(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_几何矩形(plane[0], node);
	}
	else if (node->m_TypeName == "线框立方体节点") {
		if (!plane[0]) plane[0] = f_节点构建_线框立方体(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_线框立方体(plane[0], node);
	}
	else if (node->m_TypeName == "网格编辑节点") {
		if (!plane[0]) plane[0] = f_节点构建_编辑网格(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_编辑网格(plane[0], node);
	}
	else if (node->m_TypeName == "网格体素节点") {
		if (!plane[0]) plane[0] = f_节点构建_网格体素(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_网格体素(plane[0], node);
	}
	else if (node->m_TypeName == "网格采样节点") {
		if (!plane[0]) plane[0] = f_节点构建_网格采样(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_网格采样(plane[0], node);
	}
	else if (node->m_TypeName == "网格法线计算节点") {
		if (!plane[0]) plane[0] = f_节点构建_计算网格法线(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_计算网格法线(plane[0], node);
	}
	else if (node->m_TypeName == "网格属性节点") {
		if (!plane[0]) plane[0] = f_节点构建_网格属性(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_网格属性(plane[0], node);
	}
	else if (node->m_TypeName == "截取网格节点") {
		if (!plane[0]) plane[0] = f_节点构建_截取网格(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_截取网格(plane[0], node);
	}
	else if (node->m_TypeName == "填充网格属性节点") {
		if (!plane[0]) plane[0] = f_节点构建_填充网格顶点(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_填充网格顶点(plane[0], node);
	}
	else if (node->m_TypeName == DEF_设置材质节点) {
		if (!plane[0]) plane[0] = f_节点构建_设置材质ID(*ctx, *S_框架::g_3D视口环境, node);
		else f_节点重置_设置材质ID(plane[0], node);
	}
	else {
		return false;
	}

	return true;
}















static void f_取多边形面属性节点_部件构建属性(C_属性栏* plane, S_结构对象指针 obj) {
	C_取多边形面属性节点* node = dynamic_cast<C_取多边形面属性节点*>(((C_节点面板*)obj)->m_NodeData);
	std::vector<S_Props> props;
	f_节点重构_重构属性面板数据((C_节点面板*)obj, props);
	node->m_属性.m_UI->m_Update = on_参数修改_重新编译;
	props.push_back(node->m_属性);
	plane->f_构建属性部件(props);
}

C_节点面板* f_节点构建_取多边形面属性节点(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree) {
	if (!node) {
		node = new C_取多边形面属性节点(ctx_3d);
		node->m_ICO = "ico编辑网格0014";
	}
	C_节点面板* plane = new C_节点面板(node, ctx, E_节点区类型::e_节点区_物体);
	f_节点重置_取多边形面属性节点(plane, node);
	return plane;
}

void f_节点重置_取多边形面属性节点(C_节点面板* plane, C_节点基类* node) {
	f_节点重构_面板插座重构(plane, node, E_节点区类型::e_节点区_节点视图);
	plane->m_属性面板参数构建 = f_取多边形面属性节点_部件构建属性;
	plane->m_ICO = node->m_ICO;
}










